package pe.edu.unmsm.fisi.sisconteg.business.service.impl;

import javax.annotation.Resource;

import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import pe.edu.unmsm.fisi.sisconteg.business.service.UsuarioService;
import pe.edu.unmsm.fisi.sisconteg.domain.model.Usuario;
import pe.edu.unmsm.fisi.sisconteg.repository.dao.UsuarioDAO;

@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class UsuarioServiceImpl implements UsuarioService {

	@Resource
	private UsuarioDAO usuarioDAO;
	
	static final String URL_MENU_ADMIN="/common/menu.xhtml";
	static final String URL_MENU_EGRESADO="/common/menuRolEgresado.xhtml";

	@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
	@Override
	public Usuario validarUsuarioyPassword(String nickname, String password)
			throws DataAccessException {
		Usuario usuario = usuarioDAO.getUsuarioxNick(nickname);
		if (usuario == null || !(usuario.getPwdUsuario().equals(password))) {
			return null;
		}

		return usuario;
	}

	@Override
	public Usuario obtenerUsuarioxNick(String nick) throws DataAccessException {
		return usuarioDAO.getUsuarioxNick(nick);
	}

	@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
	@Override
	public void crearUsuario(Usuario usuario) throws DataAccessException {
		usuarioDAO.crear(usuario);
	}

	@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
	@Override
	public void actualizarUsuario(Usuario usuario) throws DataAccessException {
		usuarioDAO.actualizar(usuario);
	}
	
	@Override
	public String obtenerMenu(int iperfil) throws DataAccessException {
		if (iperfil==1)
			return URL_MENU_ADMIN;
		else
			return URL_MENU_EGRESADO;
	}
}
